7.13. Los archivos de inicio de Bash Shell

El programa de Shell /bin/bash (en adelante referido como the shell) utiliza una colección de ficheros de inicio para ayudar a crear un entorno de ejecución. Cada archivo tiene un uso específico y puede afectar a los entornos interactivos y de login de manera diferente. Los archivos en el directorio/etc proporcionan ajustes globales. Si existe un fichero en el directorio principal, se podrían modificar los ajustes globales.

Un intérprete de ingreso interactivo se inicia tras entrar en el sistema, usando /bin/login, mediante la lectura del archivo /etc/passwd. Un shell interactivo de no ingreso se inicia en la línea de comandos (por ejemplo, [prompt]$/bin/bash). Un intérprete no interactivo está presente usualmente cuando un shell script se está ejecutando. Es no interactivo porque está procesando un script y no esperando indicaciones del usuario entre comandos.

Para más información, vea info bash en la sección Bash Startup Files and Interactive Shells.

Los archivos /etc/profile y ~/.bash_profile son leídos cuando la shell se invoca como una shell interactiva de login.

El fichero base /etc/profile establece algunas variables de entorno necesarias para el soporte de idioma nativo. Si se ajustan correctamente se obtiene:

Reemplace a continuación <ll> con el código de dos letras del idioma deseado (por ejemplo, en) y <CC> con el código de dos letras para el país (por ejemplo, GB). <charmap> debería ser reemplazado con la charmap canónica para su ubicación elegida. Modificadores opcionales como @euro también pueden estar presentes.

La lista de todas las locales soportadas por Glibc se puede obtener ejecutando el siguiente comando:

locale -a

Los mapas de caractéres pueden tener una serie de sinónimos, por ejemplo, ISO-8859-1 es también conocido como iso8859-1 y iso88591. Algunas aplicaciones no pueden manejar correctamente los diversos sinónimos (por ejemplo, se requiere que UTF-8 se escriba como UTF-8, y no como utf8), por lo que es más seguro en la mayoría de los casos elegir el nombre canónico de la locale. Para determinar el nombre canónico, ejecute el siguiente comando, donde <locale name> es la salida dada por locale -a para tu ubicación preferida (en_GB.iso88591 en nuestro ejemplo).

LC_ALL=<locale name> locale charmap

Para la localización en_GB.iso88591 el anterior comando, mostrará:

ISO-8859-1

Esto da lugar a una configuración regional final de en_GB.ISO-8859-1. Es importante que la ubicación encontrada utilizando el método anterior sea comprobada antes de añadirla a los ficheros de inicio de Bash:

LC_ALL=<locale name> locale language
LC_ALL=<locale name> locale charmap
LC_ALL=<locale name> locale int_curr_symbol
LC_ALL=<locale name> locale int_prefix

Los comandos deberán mostrar el nombre del idioma, la codificación de caracteres utilizados por el entorno local, la moneda local, y el prefijo a marcar antes del número de teléfono con el fin de entrar en el país. Si alguno de los comandos anteriores fallan con un mensaje similar al que se muestra a continuación, esto significa que su ubicación no se instaló en el capítulo 6 o no cuenta con sosporte de la instalación por defecto de Glibc.

locale: Cannot set LC_* to default locale: No such file or directory

Si esto sucede, usted debe instalar el entorno nacional deseado usando el comando localedef, o considerar la elección de una configuración regional diferente. Las instrucciones a continuación asumen que no hay mensajes de error procedentes de Glibc.

Algunos paquetes más allá del LFS pueden carecer de apoyo para su ubicación elegida. Un ejemplo es la librería X (parte del sistema X Window), que emite el siguiente mensaje de error si la configuración regional no coincide exactamente con uno de los nombres del mapa de caracteres de sus ficheros internos:

Warning: locale not supported by Xlib, locale set to C

En varios casos Xlib espera que el mapa de caracteres sea listado en mayúsculas y con guiones. Por ejemplo, "ISO-8859-1" en lugar de "iso88591". También es posible encontrar una especificación apropiada mediante la eliminación de la parte del mapa de la especificación de la configuración regional. Esto se puede comprobar ejecutando el comando locale charmap en ambos locales. Por ejemplo, habría que cambiar "de_DE.ISO-8859-15 @ euro" por "de_DE @ euro" con el fin de obtener esta localidad reconocida por Xlib.

Otros paquetes también pueden funcionar incorrectamente (pero no necesariamente mostrar un mensaje de error) si el nombre de entorno nacional no cumple con sus expectativas. En estos casos, investigar cómo otras distribuciones Linux soportan tu ubicación podría proporcionar información útil.

Una vez que los ajustes correctos para el idioma se han determinado, crea el archivo /etc/profile:

cat > /etc/profile << "EOF"
# Begin /etc/profile

export LANG=<ll>_<CC>.<charmap><@modifiers>

# End /etc/profile
EOF

La ubicación de laC (por defecto) y en_US (la recomendada para los usuarios de Estados Unidos en inglés) son diferentes.C utiliza el US-ASCII juego de caracteres de 7 bits, y trata bytes con el bit alto establecido como caracteres no válidos. Es por eso que, por ejemplo, el comando ls los sustituye con interrogantes en dicha localidad. También, un intento de enviar correo con caracteres de Mutt o Pine da como resultado el envío de mensajes que no son RFC conformes (el juego de caracteres en el correo saliente se indica como unknown 8-bit). Así que usted puede utilizar la localización C sólo si está seguro de que nunca tendrá caracteres de 8 bits.

Las locales basadas en UTF-8 no son compatibles por muchos programas. Se está trabajando para documentar y, si es posible, solucionar este tipo de problemas. Para más información, consulte http://www.linuxfromscratch.org/blfs/view/svn/introduction/locale-issues.html.